//
//  CZStatusListViewModel.swift
//  Weibo28
//
//  Created by Apple on 16/5/13.
//  Copyright © 2016年 itcast. All rights reserved.
//

import UIKit
//  tableview对应的viewmodel
class CZStatusListViewModel: NSObject {
    //  保存微博数据
    var statusList: [CZStatusViewModel]?
    //  获取微博数据
    //  isPullUp 是否上拉加载
    func requestStatus(isPullUp: Bool, complete: (isSuccess: Bool, message: String)->()) {
        
        //  上拉加载使用的默认的maxid
        var maxId: Int64 = 0
        //  下拉刷新使用的默认值
        var sinceId: Int64 = 0
        //  是上拉加载
        if isPullUp {
            //  代表上拉加载更多 上拉加载要取数组里面的最后一条微博数据的id
            maxId = statusList?.last?.status?.id ?? 0
            if maxId > 0 {
                //  去除重复的微博数据
                maxId -= 1
            }
        } else {
            //  下拉刷新要取数组里面的第一条微博数据的id
            sinceId = statusList?.first?.status?.id ?? 0
            
        }
        
        CZStatusDAL.loadData(maxId, sinceId: sinceId) { (statusesArray) -> () in
            
            var message = "没有加载到微博数据"
            if statusesArray.count == 0 {
                complete(isSuccess: false, message: message)
                return
            }
        
            //  遍历数组字典初始化模型
            var tempArray = [CZStatusViewModel]()
            for value in statusesArray {
                let status = CZStatus(dic: value)
                //  通过status模型转成我们需要viewModel
                let statusViewModel = CZStatusViewModel(status: status)
                tempArray.append(statusViewModel)
            }
            
            //  判断statusList是否微博nil如果为nil则进行初始化
            if self.statusList == nil {
                self.statusList = [CZStatusViewModel]()
            }
            
            //  刷新数据
            if isPullUp {
                //  如果是上拉加载则追加数据
               // self.statusList! += tempArray
                
                self.statusList = self.statusList! + tempArray
                
            } else {
                //  不是上拉加载则往数组前面插入数据
                self.statusList = tempArray + self.statusList!
            }
//           self.statusList = tempArray
            //  通过闭包回调数据
            
//            dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (Int64)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), { () -> Void in
//                
//            })
            let count = tempArray.count
            if count > 0 {
                message = "加载了\(count)条微博数据"
            }
            
            complete(isSuccess: true, message: message)
            
            
            
       
        }
        
    }

    
}
